home *** CD-ROM | disk | FTP | other *** search
/ Programming Sound Cards / Programming Sound Cards.iso / sound_36 / pb-sb120.exe / SBMIX.BAS < prev    next >
BASIC Source File  |  1995-01-20  |  3KB  |  89 lines

  1. '****************************************************************************
  2. '
  3. '           -=≡ Sound Blaster(tm) Unit für PowerBasic 3.0c ≡=-
  4. '                              Version 1.20
  5. '
  6. '     >>>   Source Code zur Ansteuerung des SBPro Mixer Chip 1345   <<<
  7. '
  8. '  entwickelt von Th.Gohel  Fido:      2:2410/308.12
  9. '                           BasNet:     130:1313/102
  10. '                           Internet:  Th.Gohel@wibo.berlinet.in-berlin.de
  11. '
  12. '  letztes Update 20.01.1995
  13. '
  14. '  Hinweis: Diese Source enthält die wichtigsten Funktionen um den SBPro-
  15. '           Mixer ansteuern zu können. Da der SB16-Mixerchip 1745 abwärts-
  16. '           kompatibel zum 1345 ist, können die Routinen auch auf eine SB16
  17. '           und höher angewandt werden. Der SB16-Mixer rechnet die Mixer-
  18. '           werte automatisch auf seine eigenen Mixerwerte um.
  19. '
  20. '  Test:    Zum Test sollten Sie ihr Mixerprogramm starten, dann dieses
  21. '           Demo in der PowerBasic-IDE kompilieren und jetzt den TSR-Mixer
  22. '           per Hotkey (meist ALT-1) aufrufen.
  23. '
  24. '
  25. '           Die Register des Chip 1345/1745 in dieser Routine:
  26. '
  27. '           MixReg% = 1:  Voice   Lautstärke setzen
  28. '           MixReg% = 2:  Master  Lautstärke setzen
  29. '           MixReg% = 3:  MIDI    Lautstärke setzen
  30. '           MixReg% = 4:  LineIn  Lautstärke setzen
  31. '
  32. '****************************************************************************
  33.  
  34. $COMPILE EXE "SBMIX.EXE"
  35.  
  36. PUBLIC SBPort%
  37.  
  38. SBPort% = &h220                       :' Port der Sound Blaster
  39.  
  40. DEMO:
  41.     SBMix4Bit 15, 15 ,1           :' Voice
  42.     SBMix4Bit 15, 15 ,2           :' Master
  43.     SBMix4Bit  0,  0 ,3           :' MIDI
  44.     SBMix4Bit  0,  0 ,4           :' Line
  45. END
  46.  
  47.  
  48. FUNCTION SBMix4Bit(BYVAL SBLeftLevel%, BYVAL SBRightLevel%, MixReg%) public
  49.  
  50.         IF SBLeftLevel%  < 0 OR SBLeftLevel%  > 15 THEN EXIT FUNCTION
  51.         IF SBRightLevel% < 0 OR SBRightLevel% > 15 THEN EXIT FUNCTION
  52.  
  53.         SELECT CASE MixReg%
  54.             CASE 1: SBMixRegister% = &h04           :'Voice
  55.             CASE 2: SBMixRegister% = &h22           :'Master
  56.             CASE 3: SBMixRegister% = &h26           :'FM/MIDI
  57.             CASE 4: SBMixRegister% = &h2E           :'Line In
  58.             CASE ELSE: EXIT FUNCTION
  59.          END SELECT
  60.  
  61.     SBMixPort% = SBPort% + 4
  62.  
  63.     ' *** linker Kanal ***
  64.     ! mov  ah, SBLeftLevel%
  65.     ! mov  dx, SBMixPort%
  66.     ! mov  al, SBMixRegister%
  67.     ! out  dx, al
  68.     ! inc  dx
  69.     ! in   al, dx
  70.     ! and  al, &hf
  71.     ! mov  cl, 4
  72.     ! shl  ah, cl
  73.     ! or   al, ah
  74.     ! out  dx, al
  75.  
  76.     '*** rechter Kanal ***
  77.     ! mov  ah, SBRightLevel%
  78.     ! mov  dx, SBMixPort%
  79.     ! mov  al, SBMixRegister%
  80.     ! out  dx, al
  81.     ! inc  dx
  82.     ! in   al, dx
  83.     ! and  al, &hf0
  84.     ! and  ah, &hf
  85.     ! or   al, ah
  86.     ! out  dx, al
  87.  
  88. END FUNCTION
  89.